const { log } = console
// 模拟常用的高阶函数: map, every, some
// map 遍历 处理 把处理结果存储到新的数组中返回
const map = (arr, fn) => {
  let results = []
  for (let val of arr) {
    results.push(fn(val))
  }
  return results
}

// 测试
let arr = [1, 2, 3, 4, 5]
// 求平方
arr = map(arr, (v) => v * v)
log(arr)

// every
// 用来判断数组的每个元素是否都匹配条件
const every = (arr, fn) => {
  let result = true
  for (let val of arr) {
    // fn来判断是不是满足条件
    result = fn(val)
    if (!result) {
      break
    }
  }
  return result
}
// 测试
let arr = [1, 2, 3, 4, 5]
let result = every(arr, (v) => v > 1)
log(result)

// some
// 监测数组中的元素是否有一个满足
const some = (arr, fn) => {
  let result = false
  for (let val of arr) {
    // fn来判断是不是满足条件
    result = fn(val)
    if (result) {
      break
    }
  }
  return result
}
// 测试
let arr = [1, 3, 5, 7, 8]
let r = some(arr, (val) => val % 2 === 0)
log(r)
